Package de.yaams.extensions.rgssproject.map.nevent.command

Source Code of de.yaams.extensions.rgssproject.map.nevent.command.VariableCommand

/**
*
*/
package de.yaams.extensions.rgssproject.map.nevent.command;

import org.jruby.RubyFixnum;

import de.yaams.extensions.jruby.RubyHelper;
import de.yaams.extensions.rgssproject.database.RGSS1Helper;
import de.yaams.extensions.rgssproject.database.RGSS1Helper.Type;
import de.yaams.extensions.rgssproject.database.form.FormDBComboBox;
import de.yaams.extensions.rgssproject.database.form.RubyForm;
import de.yaams.extensions.rgssproject.map.form.FormSwitchVarSelector;
import de.yaams.extensions.rgssproject.map.nevent.core.EventCode;
import de.yaams.extensions.rgssproject.map.nevent.core.EventCommand;
import de.yaams.maker.helper.JavaHelper;
import de.yaams.maker.helper.gui.form.FormComboBox;
import de.yaams.maker.helper.gui.form.FormElement;
import de.yaams.maker.helper.gui.form.FormElementChangeListener;
import de.yaams.maker.helper.gui.form.FormEmpty;
import de.yaams.maker.helper.gui.form.FormHelper;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.form.core.FormHeader;
import de.yaams.maker.helper.language.I18N;

/**
* @author abt
*
*/
public class VariableCommand extends EventCommand {

  protected static String[] tActor = new String[] { "Level", "EXP", "HP", "SP", "Max HP", "Max SP", "Strength", "Dexterity", "Agility", "Intelligence",
      "Attack Power", "Phys. Defense", "Mag. Defense", "Evasion" };
  protected static String[] tEnemy = new String[] { "HP", "SP", "Max HP", "Max SP", "Strength", "Dexterity", "Agility", "Intelligence", "Attack Power",
      "Phys. Defense", "Mag. Defense", "Evasion" };
  protected static String[] tSprite = new String[] { "X Tile", "Y Tile", "Face", "Screen X", "Screen Y", "Terrain" };
  protected static String[] tOther = new String[] { "Map ID", "Party Size", "Money", "Number of Step", "Play Time", "Timer in Secons", "Number of Saves" };
  protected static String[] oTit = new String[] { "=", "+", "-", "*", "/", "%" };

  /**
   * Create a new LabelCommand
   */
  public VariableCommand() {
    beta = true;
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.extensions.map.nevent.core.EventCommand#getTitle(de.yaams.extensions
   * .map.nevent.core.EventCode)
   */
  @Override
  protected String getInternTitle(EventCode e) {

    // missing parameter?
    if (e.getParameters().size() < 6) {
      e.getParameters().add(RubyFixnum.one(e.getObject().getRuntime()));
    }

    // build it
    StringBuffer s = new StringBuffer();

    // single or multi?
    int v1 = RubyHelper.toInt(e.getParameters().get(0)), v2 = RubyHelper.toInt(e.getParameters().get(1));
    // exist?
    if (v1 == 0) {
      s.append("!0!");
    } else {
      s.append(RGSS1Helper.get(e.getYecl().getProject(), Type.VARIABLE).get(v1).getName());
    }
    if (v1 != v2) {
      s.append("-");
      // exist?
      if (v2 == 0) {
        s.append("!0!");
      } else {
        s.append(RGSS1Helper.get(e.getYecl().getProject(), Type.VARIABLE).get(v2).getName());
      }
    }

    // add operator
    s.append(oTit[RubyHelper.toInt(e.getParameters().get(2))]);

    // prepare
    v1 = RubyHelper.toInt(e.getParameters().get(4));
    v2 = RubyHelper.toInt(e.getParameters().get(5));

    // add value
    switch (RubyHelper.toInt(e.getParameters().get(3))) {
    case 0: // Value
      s.append(v1);
      break;
    case 1: // Variable
      // exist?
      if (v1 == 0) {
        s.append("!0!");
      } else {
        s.append(RGSS1Helper.get(e.getYecl().getProject(), Type.VARIABLE).get(v1).getName());
      }
      break;
    case 2: // Random
      s.append(I18N.t("Random:{0}-{1}", v1, v2));
      break;
    case 3: // Item
      // exist?
      if (v1 == 0) {
        s.append("!0!");
      } else {
        s.append(RGSS1Helper.get(e.getYecl().getProject(), Type.ITEM).get(v1).getName());
      }
      break;
    case 4: // Actor
      // exist?
      if (v1 == 0) {
        s.append("!0!");
      } else {
        s.append(I18N.t("{0} {1}", RGSS1Helper.get(e.getYecl().getProject(), Type.ACTOR).get(v1).getName(), tActor[v2]));
      }
      break;
    case 5: // Enemy
      s.append(I18N.t("{0} {1}", v1 + 1, tEnemy[v2]));
      break;
    case 6: // Spirit
      s.append(I18N.t("{0} {1}", v1, tSprite[v2]));
      break;
    case 7: // Other
      s.append(tOther[v1]);
      break;
    default:
      s.append("?");
      s.append(RubyHelper.toInt(e.getParameters().get(3)));
      break;
    }

    return s.toString();
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.extensions.map.nevent.core.EventCommand#getIcon()
   */
  @Override
  public String getIcon() {
    return "variable";
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.extensions.map.nevent.core.EventCommand#getIcon(de.yaams.extensions
   * .map.nevent.core.EventCode)
   */
  @Override
  public Object getIcon(EventCode e) {
    return getIcon();
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.extensions.map.nevent.core.EventCommand#getStartParameter()
   */
  @Override
  public String getStartParameter() {
    return "1,1,0,0,0,0,0";
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.extensions.map.nevent.core.EventCommand#getName()
   */
  @Override
  public String getName() {
    return I18N.t("Variable");
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.extensions.map.nevent.core.EventCommand#getGroup()
   */
  @Override
  public String getGroup() {
    return I18N.t("Control");
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.extensions.map.nevent.core.EventCommand#buildPanel(de.yaams.
   * core.helper.gui.form.core.FormBuilder,
   * de.yaams.extensions.map.nevent.core.EventCode)
   */
  @Override
  public void buildPanel(FormBuilder f, final EventCode e) {
    // missing parameter?
    if (e.getParameters().size() < 6) {
      e.getParameters().add(RubyFixnum.one(e.getObject().getRuntime()));
    }

    // add type
    final FormComboBox c = new FormComboBox(I18N.t("Type"), new String[] { "0", "1" }, new String[] { "Single", "Multi" });
    c.selectField(RubyHelper.toInt(e.getParameters().get(0)) == RubyHelper.toInt(e.getParameters().get(1)) ? "0" : "1");

    f.getHeader("basic").setColumn(4);

    f.addElement("basic.type", c.setSorting(-1));
    f.addElement("basic.type2", new FormEmpty().setSorting(-1));

    // add switch
    f.addElement("basic.v1", new FormSwitchVarSelector(e.getYecl().getProject(), I18N.t("Setze"), e.getParameters(), 0, Type.VARIABLE)
        .addChangeListener(new FormElementChangeListener() {

          @Override
          public void stateChanged(FormElement form) {
            if (c.getContentAsString().equals("0")) {
              RubyHelper.setNum(e.getParameters(), 1, c.getContentAsString());
            }
          }
        }));

    // add 2. switch
    f.addElement("basic.v2", FormHelper.setEnabeldWhenRightElementSelect(c,
        new FormSwitchVarSelector(e.getYecl().getProject(), I18N.t("bis"), e.getParameters(), 1, Type.VARIABLE), "1"));

    c.addChangeListener(new FormElementChangeListener() {

      @Override
      public void stateChanged(FormElement form) {
        if (c.getContentAsString().equals("0")) {
          RubyHelper.setNum(e.getParameters(), 1, RubyHelper.toInt(e.getParameters().get(0)));
        }

      }
    });

    // add operator
    f.addElement("basic.operator", RubyForm.getComboBoxNum(I18N.t("Operator"), JavaHelper.numAry(5), oTit, e.getParameters(), 2).setSorting(1));

    // add values

    f.addHeader("value", new FormHeader("Value", "variable").setColumn(4));

    // selector
    FormComboBox fcb = RubyForm.getComboBoxNum(I18N.t("Typ"), JavaHelper.numAry(7),
        new String[] { "Value", "Variable", "Random", RGSS1Helper.getName(Type.ITEM), "Actor", "Enemy", "Spirit", "Other" }, e.getParameters(), 3);
    f.addElement("value.atyp", fcb);
    f.addElement("value.atyp1", new FormEmpty());

    // value
    f.addElement("value.bvalue", FormHelper.setEnabeldWhenRightElementSelect(fcb, RubyForm.getNumber(I18N.t("Wert"), e.getParameters(), 4), "0"));

    // variable
    f.addElement("value.bvar", FormHelper.setEnabeldWhenRightElementSelect(fcb,
        new FormSwitchVarSelector(e.getYecl().getProject(), I18N.t("Variable"), e.getParameters(), 4, Type.VARIABLE), "1"));

    // random
    f.addElement("value.crand", FormHelper.setEnabeldWhenRightElementSelect(fcb, RubyForm.getNumber(I18N.t("Random"), e.getParameters(), 4), "2"));
    f.addElement("value.crand2", FormHelper.setEnabeldWhenRightElementSelect(fcb, RubyForm.getNumber(I18N.t("-"), e.getParameters(), 5), "2"));

    // item
    f.addElement("value.ditem", FormHelper.setEnabeldWhenRightElementSelect(fcb, new FormDBComboBox(RGSS1Helper.getName(Type.ITEM), e.getYecl()
        .getProject(), Type.ITEM, e.getParameters(), 4, false).setInfoTxt(I18N.t("Anzahl des Gegenstandes im Inventar der Party")), "3"));
    f.addElement("value.ditem2", new FormEmpty());

    // actor
    f.addElement("value.eactor", FormHelper.setEnabeldWhenRightElementSelect(fcb, new FormDBComboBox(I18N.t("Actor"), e.getYecl().getProject(), Type.ACTOR,
        e.getParameters(), 4, false), "4"));
    f.addElement("value.eactor2",
        FormHelper.setEnabeldWhenRightElementSelect(fcb, RubyForm.getComboBoxNum(I18N.t(""), JavaHelper.numAry(13), tActor, e.getParameters(), 5), "4"));

    // enemy
    f.addElement(
        "value.fenemy",
        FormHelper.setEnabeldWhenRightElementSelect(fcb,
            RubyForm.getComboBoxNum(I18N.t("Enemy"), JavaHelper.numAry(7), JavaHelper.numAry(7), e.getParameters(), 4), "5"));

    f.addElement("value.fenemy2",
        FormHelper.setEnabeldWhenRightElementSelect(fcb, RubyForm.getComboBoxNum(I18N.t(""), JavaHelper.numAry(11), tEnemy, e.getParameters(), 4), "5")); // FUNF

    // enemy
    f.addElement("value.gsprite",
        FormHelper.setEnabeldWhenRightElementSelect(fcb, RubyForm.getEventSelector("Event", e.getYecl().getMap(), e.getParameters(), 4), "6"));
    f.addElement("value.gsprite2",
        FormHelper.setEnabeldWhenRightElementSelect(fcb, RubyForm.getComboBoxNum(I18N.t(""), JavaHelper.numAry(5), tSprite, e.getParameters(), 5), "6"));

    // other
    f.addElement("value.hother", FormHelper.setEnabeldWhenRightElementSelect(fcb,
        RubyForm.getComboBoxNum(I18N.t("Other"), JavaHelper.numAry(6), tOther, e.getParameters(), 5), "7"));

    // disable wrong elements
    fcb.informListeners();
    c.informListeners();

  }
}
TOP

Related Classes of de.yaams.extensions.rgssproject.map.nevent.command.VariableCommand

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.